
/** BASIC SETUP START **/

.gridzy {
	display: block;
	will-change: width, height;
}

/* Hint for browsers to make animations even smoother */
.gridzy > .gridzyItem {
	will-change: left, top, width, height, opacity, transform;
}

/* Prevent initial visibility of items */
.gridzy > *:not(.gridzyItem) {
	visibility: hidden;
}

/* Fully visible state of items (transitions see below) */
.gridzyItemVisible {
}

/* Fully hidden state of items (transitions see below) */
.gridzyItemHidden {
	display: none;
}

/** BASIC SETUP END **/






/** SKIN SETUP START **/

/* Provides possibility to use semantic HTML without needing any skin, by using class "gridzyImage" */
.gridzy .gridzyImage {
	vertical-align: middle;
	width: 100%;
	height: 100%;
}

/** SKIN SETUP END **/






/** ANIMATION START  **/

/* transitions for several dynamic style changes */
.gridzyAnimated {
	height: 0;
	transition: height .4s;
}

.gridzyAnimated .gridzyItem {
	transition: all .4s;
}

/* Animation for appearing items on start of gallery */
.gridzyAnimated .gridzyItemInitialToVisible {
	animation-name: gridzyItemInitialToVisibleAnimation;
	animation-fill-mode: forwards;
	animation-duration: .4s;
}

@keyframes gridzyItemInitialToVisibleAnimation {
	0% {
		opacity: 0;
		transform: scale(.9);
	}

	100% {
		opacity: 1;
		transform: scale(1);
	}
}

/* Animation for appearing items while changing filter */
.gridzyAnimated .gridzyItemHiddenToVisible {
	animation-name: gridzyItemHiddenToVisibleAnimation;
	animation-fill-mode: forwards;
	animation-duration: .4s;
}

@keyframes gridzyItemHiddenToVisibleAnimation {
	0% {
		opacity: 0;
		transform: scale(.9);
	}

	100% {
		opacity: 1;
		transform: scale(1);
	}
}

/* Animation for disappearing items while changing filter */
.gridzyAnimated .gridzyItemVisibleToHidden {
	animation-name: gridzyItemVisibleToHiddenAnimation;
	animation-fill-mode: forwards;
	animation-duration: .4s;
}

@keyframes gridzyItemVisibleToHiddenAnimation {
	0% {
		opacity: 1;
		transform: scale(1);
	}

	100% {
		opacity: 0;
		transform: scale(.9);
	}
}

/* Here you can add an animation for items which stay visible while changing filter */
/*
.gridzyAnimated .gridzyItemVisibleToVisible {
	animation-name: gridzyItemVisibleToVisibleAnimation;
	animation-fill-mode: forwards;
	animation-duration: .4s;
}

@keyframes gridzyItemVisibleToVisibleAnimation {
	0% {
		transform: rotate(0deg);
	}

	100% {
		transform: rotate(360deg);
	}
}
*/

/** ANIMATION END  **/






/** PROGRESS INDICATOR START **/

.gridzyItem {
	opacity: 1;
}

.gridzyItemLoading {
	opacity: .3;
	box-shadow: inset 0 0 15px -5px #666;
}

.gridzyItemLoading::before {
	content: " ";
	position: absolute;
	left: 50%;
	top: 50%;
	width: 50px;
	height: 50px;
	margin: -25px 0 0 -25px;
	padding: 0;
	z-index: 1;
	opacity: 1;
	background: none;
	border: 2px solid;
	border-color: transparent transparent rgb(0, 0, 0) rgb(0, 0, 0);
	border-radius: 50%;
	outline: none;
	animation-duration: 1s;
	animation-name: gridzyProgressIndicator;
	animation-iteration-count: infinite;
	animation-timing-function: linear;
}

@keyframes gridzyProgressIndicator {
	0% {
		transform: rotate(0deg);
		left: 50%;
	}
	100% {
		transform: rotate(360deg);
		left: 50%;
	}
}

/** PROGRESS INDICATOR END **/
